package org.aeon.dao;

import org.aeon.entity.ChatMessage;

import java.util.Date;
import java.util.List;
import java.util.function.Predicate;

/**
 * @author: MissingAeon
 * @date: 2024/1/26 13:53
 * @description: 信息持久化
 */
public interface UserMessageDao {
    /**
     * 添加一个信息
     *
     * @param chatMessage
     * @return
     */
    int insert(Long userId, ChatMessage chatMessage);

    /**
     * 批量添加一个信息
     *
     * @param chatMessages
     * @return
     */
    int batchInsertion(Long userId, List<ChatMessage> chatMessages);

    /**
     * 批量删除
     *
     * @param condition
     * @return
     */
    int batchDeletion(Predicate<ChatMessage> condition);

    /**
     * 读取信息
     *
     * @param userId
     * @param targetId
     * @param date   日期
     * @return
     */
    List<ChatMessage> read(Long userId, Long targetId, Date date);

    /**
     * 读取信息
     *
     * @param userId
     * @param targetId
     * @param count  数量
     * @return
     */
    List<ChatMessage> read(Long userId, Long targetId, Long start, int count);


    /**
     * 模糊搜索
     * 若date为null那么会不断向前
     *
     * @param condition
     * @param date      停止日期
     * @return
     */
    List<ChatMessage> read(Long userId, Predicate<ChatMessage> condition, Date date);
}
